//package com.mycp.mycpcommonlib;
//
//import android.app.Activity;
//import android.content.Context;
//import android.content.ContextWrapper;
//import android.graphics.Bitmap;
//import android.graphics.PointF;
//import android.graphics.drawable.Drawable;
//import android.view.View;
//import android.widget.ImageView;
//
//import com.bumptech.glide.Glide;
//import com.bumptech.glide.request.target.BitmapImageViewTarget;
//import com.bumptech.glide.request.target.ImageViewTarget;
//import com.luck.picture.lib.engine.ImageEngine;
//import com.luck.picture.lib.listener.OnImageCompleteCallback;
//import com.luck.picture.lib.tools.MediaUtils;
//import com.luck.picture.lib.widget.longimage.ImageSource;
//import com.luck.picture.lib.widget.longimage.ImageViewState;
//import com.luck.picture.lib.widget.longimage.SubsamplingScaleImageView;
//
//import androidx.annotation.NonNull;
//import androidx.annotation.Nullable;
//import androidx.core.graphics.drawable.RoundedBitmapDrawable;
//import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
//
///**
// * Description:
// * Data：2021/9/27-下午1:50
// * Author: liujie
// */
//public class GlideImageEngine implements ImageEngine {
//
//        /**
//         * 加载图片
//         *
//         * @param context
//         * @param url
//         * @param imageView
//         */
//        @Override
//        public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
//            if (!assertValidRequest(context)) {
//                return;
//            }
//            Glide.with(context)
//                    .load(url)
//                    .into(imageView);
//        }
//
//        /**
//         * 加载网络图片适配长图方案
//         * # 注意：此方法只有加载网络图片才会回调
//         *
//         * @param context
//         * @param url
//         * @param imageView
//         * @param longImageView
//         * @param callback      网络图片加载回调监听 {link after version 2.5.1 Please use the #OnImageCompleteCallback#}
//         */
//        @Override
//        public void loadImage(@NonNull Context context, @NonNull String url,
//                              @NonNull ImageView imageView,
//                              SubsamplingScaleImageView longImageView, OnImageCompleteCallback callback) {
//            if (!assertValidRequest(context)) {
//                return;
//            }
//            Glide.with(context)
//                    .asBitmap()
//                    .load(url)
//                    .into(new ImageViewTarget<Bitmap>(imageView) {
//                        @Override
//                        public void onLoadStarted(@Nullable Drawable placeholder) {
//                            super.onLoadStarted(placeholder);
//                            if (callback != null) {
//                                callback.onShowLoading();
//                            }
//                        }
//
//                        @Override
//                        public void onLoadFailed(@Nullable Drawable errorDrawable) {
//                            super.onLoadFailed(errorDrawable);
//                            if (callback != null) {
//                                callback.onHideLoading();
//                            }
//                        }
//
//                        @Override
//                        protected void setResource(@Nullable Bitmap resource) {
//                            if (callback != null) {
//                                callback.onHideLoading();
//                            }
//                            if (resource != null) {
//                                boolean eqLongImage = MediaUtils.isLongImg(resource.getWidth(),
//                                        resource.getHeight());
//                                longImageView.setVisibility(eqLongImage ? View.VISIBLE : View.GONE);
//                                imageView.setVisibility(eqLongImage ? View.GONE : View.VISIBLE);
//                                if (eqLongImage) {
//                                    // 加载长图
//                                    longImageView.setQuickScaleEnabled(true);
//                                    longImageView.setZoomEnabled(true);
//                                    longImageView.setDoubleTapZoomDuration(100);
//                                    longImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);
//                                    longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);
//                                    longImageView.setImage(ImageSource.cachedBitmap(resource),
//                                            new ImageViewState(0, new PointF(0, 0), 0));
//                                } else {
//                                    // 普通图片
//                                    imageView.setImageBitmap(resource);
//                                }
//                            }
//                        }
//                    });
//        }
//
//        /**
//         * 加载网络图片适配长图方案
//         * # 注意：此方法只有加载网络图片才会回调
//         *
//         * @param context
//         * @param url
//         * @param imageView
//         * @param longImageView
//         * @ 已废弃
//         */
//        @Override
//        public void loadImage(@NonNull Context context, @NonNull String url,
//                              @NonNull ImageView imageView,
//                              SubsamplingScaleImageView longImageView) {
//            if (!assertValidRequest(context)) {
//                return;
//            }
//            Glide.with(context)
//                    .asBitmap()
//                    .load(url)
//                    .into(new ImageViewTarget<Bitmap>(imageView) {
//                        @Override
//                        protected void setResource(@Nullable Bitmap resource) {
//                            if (resource != null) {
//                                boolean eqLongImage = MediaUtils.isLongImg(resource.getWidth(),
//                                        resource.getHeight());
//                                longImageView.setVisibility(eqLongImage ? View.VISIBLE : View.GONE);
//                                imageView.setVisibility(eqLongImage ? View.GONE : View.VISIBLE);
//                                if (eqLongImage) {
//                                    // 加载长图
//                                    longImageView.setQuickScaleEnabled(true);
//                                    longImageView.setZoomEnabled(true);
//                                    longImageView.setDoubleTapZoomDuration(100);
//                                    longImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);
//                                    longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);
//                                    longImageView.setImage(ImageSource.cachedBitmap(resource),
//                                            new ImageViewState(0, new PointF(0, 0), 0));
//                                } else {
//                                    // 普通图片
//                                    imageView.setImageBitmap(resource);
//                                }
//                            }
//                        }
//                    });
//        }
//
//        /**
//         * 加载相册目录
//         *
//         * @param context   上下文
//         * @param url       图片路径
//         * @param imageView 承载图片ImageView
//         */
//        @Override
//        public void loadFolderImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
//            if (!assertValidRequest(context)) {
//                return;
//            }
//            Glide.with(context)
//                    .asBitmap()
//                    .load(url)
//                    .override(180, 180)
//                    .centerCrop()
//                    .sizeMultiplier(0.5f)
//                    .placeholder(R.drawable.picture_image_placeholder)
//                    .into(new BitmapImageViewTarget(imageView) {
//                        @Override
//                        protected void setResource(Bitmap resource) {
//                            RoundedBitmapDrawable circularBitmapDrawable =
//                                    RoundedBitmapDrawableFactory.
//                                            create(context.getResources(), resource);
//                            circularBitmapDrawable.setCornerRadius(8);
//                            imageView.setImageDrawable(circularBitmapDrawable);
//                        }
//                    });
//        }
//
//
//        /**
//         * 加载gif
//         *
//         * @param context   上下文
//         * @param url       图片路径
//         * @param imageView 承载图片ImageView
//         */
//        @Override
//        public void loadAsGifImage(@NonNull Context context, @NonNull String url,
//                                   @NonNull ImageView imageView) {
//            if (!assertValidRequest(context)) {
//                return;
//            }
//            Glide.with(context)
//                    .asGif()
//                    .load(url)
//                    .into(imageView);
//        }
//
//        /**
//         * 加载图片列表图片
//         *
//         * @param context   上下文
//         * @param url       图片路径
//         * @param imageView 承载图片ImageView
//         */
//        @Override
//        public void loadGridImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
//            if (!assertValidRequest(context)) {
//                return;
//            }
//            Glide.with(context)
//                    .load(url)
//                    .override(200, 200)
//                    .centerCrop()
//                    .placeholder(R.drawable.picture_image_placeholder)
//                    .into(imageView);
//        }
//
//
//        private GlideImageEngine() {
//        }
//
//        private static GlideImageEngine instance;
//
//        public static GlideImageEngine createGlideEngine() {
//            if (null == instance) {
//                synchronized (GlideImageEngine.class) {
//                    if (null == instance) {
//                        instance = new GlideImageEngine();
//                    }
//                }
//            }
//            return instance;
//        }
//
//    public static boolean assertValidRequest(Context context) {
//        if (context instanceof Activity) {
//            Activity activity = (Activity) context;
//            return !isDestroy(activity);
//        } else if (context instanceof ContextWrapper){
//            ContextWrapper contextWrapper = (ContextWrapper) context;
//            if (contextWrapper.getBaseContext() instanceof Activity){
//                Activity activity = (Activity) contextWrapper.getBaseContext();
//                return !isDestroy(activity);
//            }
//        }
//        return true;
//    }
//
//    private static boolean isDestroy(Activity activity) {
//        if (activity == null) {
//            return true;
//        }
//        return activity.isFinishing() || activity.isDestroyed();
//    }
//}
